
package com.siashan.unipay4j.wx.model;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

/**
 * 统一下单
 *
 * @author siashan
 * @since 2.0.1
 */
@Getter
@Setter
@NoArgsConstructor
public class UnifiedOrderModel {

    /**
     * appid
     *
     * @apiNote 由微信生成的应用ID，全局唯一。请求基础下单接口时请注意APPID的应用属性，例如公众号场景下，
     *          需使用应用属性为公众号的服务号APPID
     */
    private String appid;
    /**
     * 商户号
     */
    private String mchid;

    /**
     * 商品描述
     */
    private String description;
    /**
     * 商户订单号
     */
    @JSONField(name = "out_trade_no")
    private String outTradeNo;
    /**
     * 交易结束时间
     */
    @JSONField(name = "time_expire")
    private String timeExpire;
    /**
     *  附加数据
     *  @apiNote 在查询API和支付通知中原样返回，可作为自定义参数使用，实际情况下只有支付完成状态才会返回该字段
     */
    private String attach;

    /**
     * 通知地址
     *
     * @apiNote 异步接收微信支付结果通知的回调地址，通知url必须为外网可访问的url，不能携带参数。
     *          公网域名必须为https，如果是走专线接入，使用专线NAT IP或者私有回调域名可使用http
     */
    @JSONField(name = "notify_url")
    private String notifyUrl;
    /**
     * 订单优惠标记
     */
    @JSONField(name = "goods_tag")
    private String goodsTag;

    /**
     * 订单金额
     */
    private Amount amount;

    /**
     * 支付者
     */
    private Payer payer;
}
